
from scrapy_plus.core.spider import Spider
from scrapy_plus.https.request import Request
from scrapy_plus.item import Item

class DoubanSpider(Spider):

    name = "douban"

    start_urls = []  # 重写start_requests方法后，这个属性就没有设置的必要了

    page = 0

    def start_requests(self):
        # 重写start_requests方法，返回多个请求
        # base_url = 'https://movie.douban.com/top250?start='
        base_url = 'https://www.qiushibaike.com/hot/page/'
        for i in range(1, 3):    # 逐个返回第1-10页的请求属相
            url = base_url + str(i)
            yield Request(url)

    '''解析豆瓣电影top250列表页'''
    def parse(self, response):

        for li in response.xpath('//div[contains(@class,"mb15")]'):    # 遍历每一个li标签
            item = {}
            item["title"] = "糗事百科"    # 提取该li标下的 标题
            detail_url = 'https://www.qiushibaike.com' + li.xpath('.//a[@class="contentHerf"]/@href')[0]

            self.page += 1
            if self.page > 2:
                break

            yield Request(detail_url, parse="parse_detail",meta={"item":item})    # 发起详情页的请求，并指定解析函数是parse_detail方法

    '''解析详情页'''
    def parse_detail(self, response):

        item = response.meta["item"]
        item["url"] = response.url

        # print('item：', item)    # 打印一下响应的url

        # return []    # 由于必须返回一个容器，这里返回一个空列表

        yield Item(item)  #或者yield Item对象









